﻿namespace DimensionsHelper.Serialization.CommandLine;


[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = true)]
public class ArgumentPropertyAttribute : Attribute
{

    public ArgumentPropertyAttribute()
    {
        ArgumentName = string.Empty;
    }


    public ArgumentPropertyAttribute(string argName)
    {
        ArgumentName = argName;
    }


    /// <summary>
    /// 控制台参数名
    /// </summary>
    public string ArgumentName { get; set; }


    /// <summary>
    /// 如果控制台参数是字典的关键字，设置此属性为 true。
    /// </summary>
    public bool IsDictionaryKey { get; set; }


    /// <summary>
    /// 如果控制台参数是字典的值，设置此属性为 true。
    /// </summary>
    public bool IsDictionaryValue { get; set; }


    /// <summary>
    /// 获取或设置列表值的字符串分隔符。
    /// </summary>
    public string Separator { get; set; } = ";";


    /// <summary>
    /// 当属性值类型是对象时，将指定属性名配置到此属性。
    /// </summary>
    public string PropertyBinding { get; set; } = string.Empty;


    /// <summary>
    /// 如果此属性的值允许沿用上一个值，设置此属性为<see langword="true"/>
    /// </summary>
    public bool CanFollow { get; set; }

}
